package lkx.demo.test4;

/**
 * 如何交换两个int型变量的值？String呢？
 *
 * @author kunxianli
 * @date 2024/01/09 19:09
 **/
public class CaseBitSign {

    public static void main(String[] args) {

        int m = 1;
        int n = 3;

        //        方式一:定义中间变量 mid
//        int mid;
//        mid = m;
//        m = n;
//        n = mid;

//        方式二：使用异或  原理 m ^ n ^ n == m
//        优点：不需要定义临时变量。  缺点：真难、适用性差（不适用于非数值类型）
//        m  = m ^ n;
//        n = m ^ n;
//        m = n ^ m;

//        方式三：优点：不需要定义临时变量。  缺点：难、适用性差（不适用于非数值类型）、可能超出int的范围
        m = m + n;
        n = m - n;
        m = m - n;

        System.out.println("m = " + m + ",n = " + n);



    }


}
